// 手机号登录: 获取验证码, 验证码正确就登录,否则不能登录
// 准备一个复制的验证码数据 用于存放复制的验证码(后续可删掉)
let secret_code = ''
// 获取App实例
const app = getApp()
Page({
  data: {
    countDownVisible: false, //判断是否显示倒计时
    mobile: '', // 手机号
    code: '', // 验证码
    timeData: {} // 倒计时change事件获取的数据
  },
  // onLoad参数parms 是个对象 里面有传递过来的参数
  onLoad ({ redirectURL }) {
    console.log('redirectURL', redirectURL)
    // 获取地址参数
    this.setData({
      redirectURL: '/' + redirectURL
    })
  },
  // 一.获取验证码: 判断手机号是否正确 正确: 获取验证码 不正确: 提示
  async getCode () {
    // 如果没通过校验直接return
    if (!this.verifyMobile()) return
    // console.log('验证成功了')
    // 验证成功了就去获取验证码
    const { code, data } = await wx.http.get('/code', { mobile: this.data.mobile.trim() })

    // 检测接口返回的结果是否成功
    if (code !== 10000) return wx.utils.toast()
    // 获取验证码成功 给个提示
    wx.utils.toast('发送成功,请查收短信')
    // 记录验证码
    secret_code = data.code
    // 开始倒计时
    this.setData({
      countDownVisible: true
    })

  },
  // 验证手机号是否正确 提出一个函数(好维护)
  verifyMobile () {
    // 通过正则判断手机号是否正确
    const reg = /^[1][3-8][0-9]{9}$/
    // 验证手机号码是否正确
    const valid = reg.test(this.data.mobile.trim())
    // 验证失败了 给提示
    if (!valid) wx.utils.toast('请填写正确的手机号码!')
    return valid
  },
  // 验证 验证码的函数
  verifyCode () {
    // 6位的数字
    const reg = /^\d{6}$/
    // 调用test方法验证一下
    const valid = reg.test(this.data.code.trim())
    // 验证结果如果不成功 给提示
    if (!valid) wx.utils.toast('请检查验证码是否正确')
    return valid
  },
  //为了方便开发 写个小复制功能
  copyCode () {
    // 把返回的验证码复制一下
    wx.setClipboardData({
      data: secret_code,
    })
  },
  // 倒计时
  countDownChange (e) {
    // console.log('e++++', e)
    // 倒计时触发时候需要给数据赋值
    this.setData({
      // 设置倒计时数据
      timeData: e.detail,
      // 设置倒计时是都展示 60s的时候 组件自动转成1m 或是 60s 都显示倒计时
      countDownVisible: e.detail.seconds > 0 || e.detail.minutes === 1
    })
  },
  // 二. 去登录
  async submitForm () {
    // 验证手机号格式是否正确
    if (!this.verifyMobile()) return
    // 验证 验证码格式是否正确
    if (!this.verifyCode()) return
    // 验证都通过了 调登录接口去登录
    // 首先获取参数
    const { mobile, code } = this.data
    // 请求接口
    const res = await wx.http.post('/login', { mobile, code })
    // 校验接口业务处理是否成功
    if (res.code !== 10000) return wx.utils.toast()
    // 调用设置token的方法
    app.setToken(res.data.token, res.data.refreshToken)
    // 跳转回到想要去的页面
    // console.log('res', res)
    wx.redirectTo({
      url: this.data.redirectURL
    })

  }
})
